Relational database management systems, such as DB2® Universal Database™ (DB2 UDB), incorporate a shared-nothing architecture. A shared-nothing architecture is a distributed computing architecture in which each node is independent and self-sufficient, and there is no single point of contention across the system. This allows the use of independent computer servers (partitions) to own and store a portion of the data and share a CPU workload. This data ownership may be controlled by data partitioning, and the ownership may need to be altered in certain scenarios. For example, when the database manager capacity does not meet present or future business needs, the system capacity may need to be changed by adding or removing physical machines. As another example, the data ownership may need to be changed when the existing data distribution is not even or is inconsistent with machine processing power. For instance, data may be evenly distributed among database partitions, but some database partitions may be hosted by physical machines that are comparatively weak to other machines in the cluster.
To change data ownership, existing data may be redistributed among the machines in the cluster. This operation is called “data redistribution,” and may operate on all participating database partitions in parallel. On any given partition, a data redistribution utility may scan the data, and determine whether each record should stay on the respective partition or should be redistributed to some other partition. Upon determining a record should be redistributed, the data redistribution utility may redistribute the record to another partition in the cluster. However, once such redistribution occurs, the indices on the other partition must be rebuilt to account for the newly distributed record. Such rebuilding may require multiple scans of relational tables, reads of various database objects, and numerous sort operations. As a result, such rebuilding of the index may consume significant system resources and CPU cycles.